Na fase inicial do desenvolvimento em JavaScript, Poluição de Namespace era um obstáculo significativo. Quando códigos não relacionados compartilham um único conjunto de nomes de variáveis globais, colisões imprevisíveis ocorrem. O design moderno evoluiu de uma atitude sem estrutura para Sistemas de Módulos Isolados.
1. Isolamento Funcional (IIFE)
Ao envolver o código em um Expressão de Função Imediatamente Invocada (IIFE), criamos um escopo privado. Variáveis como nomes ficam presas dentro da função, inacessíveis ao ambiente global.
var interno = "segredo";
console.log(interno);
})();
2. Interfaces Baseadas em Objetos
Para fornecer funcionalidade ao mundo exterior, um módulo retorna um objeto que atua como seu interface pública. Isso agrupa métodos relacionados (como nome e número) sob uma única variável global reivindicada.
3. O Padrão de Exportações
Uma variação sofisticada envolve passar um exports objeto para a IIFE. Isso permite que o módulo vincule sua API diretamente a um destino específico de namespace, proporcionando flexibilidade na forma como o módulo é consumido.